package tests;

import static org.junit.Assert.*;

import modelo.equipo.Equipo;
import modelo.jugadores.Arquero;
import modelo.jugadores.Defensor;
import modelo.jugadores.Delantero;
import modelo.jugadores.Volante;

import org.junit.Test;


public class TestsEquipo {

	@Test
	public void testElNombreDelEquipoDeberiaAsignarseCorrectamente(){
		
		String unNombre = "Boca Juniors";
		
		Equipo unEquipo = new Equipo(unNombre);
		
		assertTrue(unEquipo.obtenerNombre() == unNombre);
		
	}

	//*************************************************************************

	@Test
	public void testOtroNombreDelEquipoDeberiaAsignarseCorrectamente(){
		
		String unNombre = "Riber Plei";
		
		Equipo unEquipo = new Equipo(unNombre);
		
		assertTrue(unEquipo.obtenerNombre() == unNombre);
		
	}
	
	//*************************************************************************
	
	@Test
	public void testUnDelanteroDeberiaAgregarseAlaListaDeDelanteros(){
		
		Delantero unDelantero = new Delantero("Calerri", 8000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(unDelantero);
		
		assertTrue(unEquipo.obtenerDelanteros().contains(unDelantero));
		
	}
	
	//************************************************************************
	
	@Test
	public void testOtroDelanteroDeberiaAgregarseAlaListaDeDelanteros(){
		
		Delantero unDelantero = new Delantero("Calerri", 8000000);
		
		Delantero otroDelantero = new Delantero("Gigliotti", 1000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(otroDelantero);
		
		unEquipo.agregarJugador(unDelantero);
		
		assertTrue(unEquipo.obtenerDelanteros().contains(otroDelantero));		
		
	}
	
	//*************************************************************************
	
	@Test
	public void testUnDelanteroNoDeberiaEstarEnLaListaDeOtrasPosiciones(){
		
		Delantero unDelantero = new Delantero("Yo", 100000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unDelantero);
		
		assertFalse(unEquipo.obtenerArqueros().contains(unDelantero));
		
		assertFalse(unEquipo.obtenerDefensores().contains(unDelantero));
		
		assertFalse(unEquipo.obtenerVolantes().contains(unDelantero));
		
	}
	
	//************************************************************************
	
	@Test
	public void testUnVolanteoDeberiaAgregarseAlaListaDeVolante(){
		
		Volante unVolante = new Volante("Castellani", 8000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(unVolante);
		
		assertTrue(unEquipo.obtenerVolantes().contains(unVolante));
		
	}
	
	//************************************************************************
	
	@Test
	public void testOtroVolanteDeberiaAgregarseAlaListaDeVolantes(){
		
		Volante unVolante = new Volante("Calerri", 8000000);
		
		Volante otroVolante = new Volante("Gigliotti", 1000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(otroVolante);
		
		unEquipo.agregarJugador(unVolante);
		
		assertTrue(unEquipo.obtenerVolantes().contains(otroVolante));		
		
	}
	
	//*************************************************************************

	@Test
	public void testUnVolanteNoDeberiaEstarEnLaListaDeOtrasPosiciones(){
		
		Volante unVolante = new Volante("Yo", 100000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unVolante);
		
		assertFalse(unEquipo.obtenerArqueros().contains(unVolante));
		
		assertFalse(unEquipo.obtenerDefensores().contains(unVolante));
		
		assertFalse(unEquipo.obtenerDelanteros().contains(unVolante));
		
	}
	
	//************************************************************************
	
	@Test
	public void testUnDefensorDeberiaAgregarseAlaListaDeDefensores(){
		
		Defensor unDefensor = new Defensor("Diaz", 8000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(unDefensor);
		
		assertTrue(unEquipo.obtenerDefensores().contains(unDefensor));
		
	}
	
	//************************************************************************
	
	@Test
	public void testOtroDefensorDeberiaAgregarseAlaListaDeDefensores(){
		
		Defensor unDefensor = new Defensor("Calerri", 8000000);
		
		Defensor otroDefensor = new Defensor("Gigliotti", 1000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(otroDefensor);
		
		unEquipo.agregarJugador(unDefensor);
		
		assertTrue(unEquipo.obtenerDefensores().contains(otroDefensor));		
		
	}	
	
	//*************************************************************************
	
	@Test
	public void testUnDefensorNoDeberiaEstarEnLaListaDeOtrasPosiciones(){
		
		Defensor unDefensor = new Defensor("Yo", 100000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unDefensor);
		
		assertFalse(unEquipo.obtenerArqueros().contains(unDefensor));
		
		assertFalse(unEquipo.obtenerDelanteros().contains(unDefensor));
		
		assertFalse(unEquipo.obtenerVolantes().contains(unDefensor));
		
	}
	
	//*************************************************************************
	
	@Test
	public void testUnArqueroDeberiaAgregarseAlaListaDeArqueros(){
		
		Arquero unArquero = new Arquero("Calerri", 8000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(unArquero);
		
		assertTrue(unEquipo.obtenerArqueros().contains(unArquero));
		
	}
	
	//************************************************************************
	
	@Test
	public void testOtroArqueroDeberiaAgregarseAlaListaDeArqueros(){
		
		Arquero unArquero = new Arquero("Calerri", 8000000);
		
		Arquero otroArquero = new Arquero("Gigliotti", 1000000);
		
		Equipo unEquipo = new Equipo("Boca");
		
		unEquipo.agregarJugador(otroArquero);
		
		unEquipo.agregarJugador(unArquero);
		
		assertTrue(unEquipo.obtenerArqueros().contains(otroArquero));		
		
	}
	
	//*************************************************************************
	
	@Test
	public void testUnArqueroNoDeberiaEstarEnLaListaDeOtrasPosiciones(){
		
		Arquero unArquero = new Arquero("Yo", 100000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unArquero);
		
		assertFalse(unEquipo.obtenerDelanteros().contains(unArquero));
		
		assertFalse(unEquipo.obtenerDefensores().contains(unArquero));
		
		assertFalse(unEquipo.obtenerVolantes().contains(unArquero));
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiAgregoYquitoUnDelanteroNoDeberiaEstarEnLaListaDeDelanteros(){
		
		Delantero unDelantero = new Delantero("yo", 5000000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unDelantero);
		
		unEquipo.quitarJugador(unDelantero);
		
		assertFalse(unEquipo.obtenerDelanteros().contains(unDelantero));
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiAgregoYquitoUnVolanteNoDeberiaEstarEnLaListaDeVolantes(){
		
		Volante unVolante = new Volante("yo", 5000000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unVolante);
		
		unEquipo.quitarJugador(unVolante);
		
		assertFalse(unEquipo.obtenerVolantes().contains(unVolante));
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiAgregoYquitoUnDefensorNoDeberiaEstarEnLaListaDeDefensores(){
		
		Defensor unDefensor = new Defensor("yo", 5000000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unDefensor);
		
		unEquipo.quitarJugador(unDefensor);
		
		assertFalse(unEquipo.obtenerDefensores().contains(unDefensor));
		
	}
	
	//************************************************************************
	
	@Test
	public void testSiAgregoYquitoUnArqueroNoDeberiaEstarEnLaListaDeArquero(){
		
		Arquero unArquero = new Arquero("yo", 5000000);
		
		Equipo unEquipo = new Equipo("metrO");
		
		unEquipo.agregarJugador(unArquero);
		
		unEquipo.quitarJugador(unArquero);
		
		assertFalse(unEquipo.obtenerArqueros().contains(unArquero));
		
	}
	
	//************************************************************************
	
}
